<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArGPS Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArGPS.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="classArGPS-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArGPS Class Reference<div class="ingroups"><a class="el" href="group__OptionalClasses.html">Optional Classes</a> &#124; <a class="el" href="group__DeviceClasses.html">Device Interface Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>GPS Device Interface.  
 <a href="classArGPS.html#details">More...</a></p>

<p><code>#include &lt;ArGPS.h&gt;</code></p>

<p>Inherited by <a class="el" href="classArNovatelGPS.html">ArNovatelGPS</a><code> [virtual]</code>, <a class="el" href="classArSimulatedGPS.html">ArSimulatedGPS</a><code> [virtual]</code>, and <a class="el" href="classArTrimbleGPS.html">ArTrimbleGPS</a><code> [virtual]</code>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a61a3e3855fdddd17b792d4c2a66fcad8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>ReadFinished</b> = ArNMEAParser::ParseFinished, 
<b>ReadError</b> = ArNMEAParser::ParseError, 
<b>ReadData</b> = ArNMEAParser::ParseData, 
<b>ReadUpdated</b> = ArNMEAParser::ParseUpdated
 }<tr class="memdesc:a61a3e3855fdddd17b792d4c2a66fcad8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to indicates what the <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> method did.  <a href="classArGPS.html#a61a3e3855fdddd17b792d4c2a66fcad8">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a61a3e3855fdddd17b792d4c2a66fcad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1e42274140dda87104aee8198ba26932"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a1e42274140dda87104aee8198ba26932">blockingConnect</a> (unsigned long connectTimeout=20000)</td></tr>
<tr class="memdesc:a1e42274140dda87104aee8198ba26932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as <a class="el" href="classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e" title="Check that the device connection (e.g. ">connect()</a>.  <a href="#a1e42274140dda87104aee8198ba26932">More...</a><br /></td></tr>
<tr class="separator:a1e42274140dda87104aee8198ba26932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5edda03cc9e4c8db380e18f8d5465b7e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e">connect</a> (unsigned long connectTimeout=20000)</td></tr>
<tr class="memdesc:a5edda03cc9e4c8db380e18f8d5465b7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check that the device connection (e.g.  <a href="#a5edda03cc9e4c8db380e18f8d5465b7e">More...</a><br /></td></tr>
<tr class="separator:a5edda03cc9e4c8db380e18f8d5465b7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac01338d1280fdc0086251049d6910c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac01338d1280fdc0086251049d6910c2"></a>
<a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aac01338d1280fdc0086251049d6910c2">getDeviceConnection</a> () const </td></tr>
<tr class="memdesc:aac01338d1280fdc0086251049d6910c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return device connection in use (or NULL if none) <br /></td></tr>
<tr class="separator:aac01338d1280fdc0086251049d6910c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa9e1a5e2a9016b7c0ff1435b11ee7e3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aaa9e1a5e2a9016b7c0ff1435b11ee7e3">lock</a> ()</td></tr>
<tr class="memdesc:aaa9e1a5e2a9016b7c0ff1435b11ee7e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Locks a mutex object contained by this class.  <a href="#aaa9e1a5e2a9016b7c0ff1435b11ee7e3">More...</a><br /></td></tr>
<tr class="separator:aaa9e1a5e2a9016b7c0ff1435b11ee7e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb09fb019a2bf2047de993b78b9b12d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#afb09fb019a2bf2047de993b78b9b12d2">logData</a> () const </td></tr>
<tr class="memdesc:afb09fb019a2bf2047de993b78b9b12d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log last received data using <a class="el" href="classArLog.html" title="Logging utility class. ">ArLog</a>.  <a href="#afb09fb019a2bf2047de993b78b9b12d2">More...</a><br /></td></tr>
<tr class="separator:afb09fb019a2bf2047de993b78b9b12d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb87bcbe1297e2890a2eb51e999424f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#abb87bcbe1297e2890a2eb51e999424f6">printData</a> (bool labels=true) const </td></tr>
<tr class="memdesc:abb87bcbe1297e2890a2eb51e999424f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print basic navigation data on one line to standard output, with no newline at end.  <a href="#abb87bcbe1297e2890a2eb51e999424f6">More...</a><br /></td></tr>
<tr class="separator:abb87bcbe1297e2890a2eb51e999424f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a90380c2665b96e7fbf2dc25bccedfe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a90380c2665b96e7fbf2dc25bccedfe"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>printDataLabelsHeader</b> () const </td></tr>
<tr class="separator:a5a90380c2665b96e7fbf2dc25bccedfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad503a2238efd4e8b447472ceacff6fe4"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4">read</a> (unsigned long maxTime=0)</td></tr>
<tr class="memdesc:ad503a2238efd4e8b447472ceacff6fe4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read some data from the device connection, and update stored data as complete messages are received.  <a href="#ad503a2238efd4e8b447472ceacff6fe4">More...</a><br /></td></tr>
<tr class="separator:ad503a2238efd4e8b447472ceacff6fe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cb49994335166fa3d3fd750bf5a054e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e">readWithLock</a> (unsigned int maxTime)</td></tr>
<tr class="memdesc:a8cb49994335166fa3d3fd750bf5a054e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls <a class="el" href="classArGPS.html#aaa9e1a5e2a9016b7c0ff1435b11ee7e3" title="Locks a mutex object contained by this class. ">lock()</a>, calls read(maxTime), then calls <a class="el" href="classArGPS.html#ac72416e9644f85190ab246fba82a7de5" title="Unlocks a mutex object contained by this class. ">unlock()</a>.  <a href="#a8cb49994335166fa3d3fd750bf5a054e">More...</a><br /></td></tr>
<tr class="separator:a8cb49994335166fa3d3fd750bf5a054e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61bdacae0f1a76978f2972055fca02c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61bdacae0f1a76978f2972055fca02c9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a61bdacae0f1a76978f2972055fca02c9">setDeviceConnection</a> (<a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *deviceConn)</td></tr>
<tr class="memdesc:a61bdacae0f1a76978f2972055fca02c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set device connection to use. <br /></td></tr>
<tr class="separator:a61bdacae0f1a76978f2972055fca02c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16e5a84ab087aa17511adfb884846279"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16e5a84ab087aa17511adfb884846279"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a16e5a84ab087aa17511adfb884846279">setIgnoreChecksum</a> (bool ignore)</td></tr>
<tr class="memdesc:a16e5a84ab087aa17511adfb884846279"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether checksum sent with NMEA messages is ignored. <br /></td></tr>
<tr class="separator:a16e5a84ab087aa17511adfb884846279"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac72416e9644f85190ab246fba82a7de5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ac72416e9644f85190ab246fba82a7de5">unlock</a> ()</td></tr>
<tr class="memdesc:ac72416e9644f85190ab246fba82a7de5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlocks a mutex object contained by this class.  <a href="#ac72416e9644f85190ab246fba82a7de5">More...</a><br /></td></tr>
<tr class="separator:ac72416e9644f85190ab246fba82a7de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a1a7ef7ff521170df45458fc1f3b223a0"><td class="memItemLeft" align="right" valign="top">enum ArGPS:: { ... } &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a1a7ef7ff521170df45458fc1f3b223a0">ReadFlags</a></td></tr>
<tr class="memdesc:a1a7ef7ff521170df45458fc1f3b223a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to indicates what the <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> method did.  <a href="#a1a7ef7ff521170df45458fc1f3b223a0">More...</a><br /></td></tr>
<tr class="separator:a1a7ef7ff521170df45458fc1f3b223a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac34efdbce1db348fb8a48586e62e2c8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aac34efdbce1db348fb8a48586e62e2c8">FixType</a> { <br />
&#160;&#160;<b>NoFix</b>, 
<b>BadFix</b>, 
<b>GPSFix</b>, 
<b>DGPSFix</b>, 
<br />
&#160;&#160;<b>PPSFix</b>, 
<b>RTKinFix</b>, 
<b>FloatRTKinFix</b>, 
<b>DeadReckFix</b>, 
<br />
&#160;&#160;<b>ManualFix</b>, 
<b>SimulatedFix</b>, 
<b>UnknownFixType</b>, 
<b>OmnistarConverging</b> = FloatRTKinFix, 
<br />
&#160;&#160;<b>OmnistarConverged</b> = RTKinFix
<br />
 }<tr class="memdesc:aac34efdbce1db348fb8a48586e62e2c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data accessors.  <a href="classArGPS.html#aac34efdbce1db348fb8a48586e62e2c8">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:aac34efdbce1db348fb8a48586e62e2c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a173e54f24d7a8dea6a837cb9122de8fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a173e54f24d7a8dea6a837cb9122de8fc"></a>
Data&#160;</td><td class="memItemRight" valign="bottom"><b>myData</b></td></tr>
<tr class="separator:a173e54f24d7a8dea6a837cb9122de8fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09c99ed715661d05c9c508b1a0ba64c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09c99ed715661d05c9c508b1a0ba64c6"></a>
<a class="el" href="classArMutex.html">ArMutex</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myMutex</b></td></tr>
<tr class="separator:a09c99ed715661d05c9c508b1a0ba64c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a530f8a753ea840968aa6be4bc2be5344"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a530f8a753ea840968aa6be4bc2be5344"></a>
<a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myDevice</b></td></tr>
<tr class="separator:a530f8a753ea840968aa6be4bc2be5344"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67b061cc47685e4e25d7580512d84348"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b061cc47685e4e25d7580512d84348"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myCreatedOwnDeviceCon</b></td></tr>
<tr class="separator:a67b061cc47685e4e25d7580512d84348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d4d34a35b099b7fa60130f66a9ccf4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d4d34a35b099b7fa60130f66a9ccf4e"></a>
<a class="el" href="classArRetFunctorC.html">ArRetFunctorC</a>&lt; bool, <a class="el" href="classArGPS.html">ArGPS</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myParseArgsCallback</b></td></tr>
<tr class="separator:a0d4d34a35b099b7fa60130f66a9ccf4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a340c57846e6a83a5e0f0eaa8c458f360"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a340c57846e6a83a5e0f0eaa8c458f360"></a>
<a class="el" href="classArArgumentParser.html">ArArgumentParser</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myArgParser</b></td></tr>
<tr class="separator:a340c57846e6a83a5e0f0eaa8c458f360"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a255d00b81a8205faccac31cd1d80ee98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a255d00b81a8205faccac31cd1d80ee98"></a>
<a class="el" href="classArNMEAParser.html">ArNMEAParser</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myNMEAParser</b></td></tr>
<tr class="separator:a255d00b81a8205faccac31cd1d80ee98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac13e4ca529752b0e4e53d25e8defabd3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac13e4ca529752b0e4e53d25e8defabd3"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPRMCHandler</b></td></tr>
<tr class="separator:ac13e4ca529752b0e4e53d25e8defabd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f3ac6ff0c85e75b8d440ec1f9f340aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3ac6ff0c85e75b8d440ec1f9f340aa"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPGGAHandler</b></td></tr>
<tr class="separator:a2f3ac6ff0c85e75b8d440ec1f9f340aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac78631b2f6237a7166148a04a5661349"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac78631b2f6237a7166148a04a5661349"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myPGRMEHandler</b></td></tr>
<tr class="separator:ac78631b2f6237a7166148a04a5661349"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a76d0f37ccf8db86a492e0b19304fdd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a76d0f37ccf8db86a492e0b19304fdd"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myPGRMZHandler</b></td></tr>
<tr class="separator:a5a76d0f37ccf8db86a492e0b19304fdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbf48a99a7c431e88abdbf0aabd1335d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbf48a99a7c431e88abdbf0aabd1335d"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myHCHDxHandler</b></td></tr>
<tr class="separator:acbf48a99a7c431e88abdbf0aabd1335d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93b78898c63ad5cb0740526f1bac7cb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93b78898c63ad5cb0740526f1bac7cb1"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPGSAHandler</b></td></tr>
<tr class="separator:a93b78898c63ad5cb0740526f1bac7cb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2beb5b6ca97882260c727c636caf75ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2beb5b6ca97882260c727c636caf75ea"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPGSVHandler</b></td></tr>
<tr class="separator:a2beb5b6ca97882260c727c636caf75ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea050c684cc7b1afa44c397ad8d91c4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea050c684cc7b1afa44c397ad8d91c4e"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>mySNRSum</b></td></tr>
<tr class="separator:aea050c684cc7b1afa44c397ad8d91c4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a702cc2edab79c8f0f6d4d33c8febe2fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a702cc2edab79c8f0f6d4d33c8febe2fc"></a>
unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>mySNRNum</b></td></tr>
<tr class="separator:a702cc2edab79c8f0f6d4d33c8febe2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa605e6541db0b11b3ac2a8784e9c1c13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa605e6541db0b11b3ac2a8784e9c1c13"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPMSSHandler</b></td></tr>
<tr class="separator:aa605e6541db0b11b3ac2a8784e9c1c13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36939a7ffaa3a6bdebf3e3335452c10c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36939a7ffaa3a6bdebf3e3335452c10c"></a>
<a class="el" href="classArFunctor1C.html">ArFunctor1C</a>&lt; <a class="el" href="classArGPS.html">ArGPS</a>, <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGPGSTHandler</b></td></tr>
<tr class="separator:a36939a7ffaa3a6bdebf3e3335452c10c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82e7bf37171be31e9c6fb8a70b4d9e25"><td class="memItemLeft" align="right" valign="top">const ArGPS::Data &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a82e7bf37171be31e9c6fb8a70b4d9e25">getCurrentDataRef</a> () const </td></tr>
<tr class="memdesc:a82e7bf37171be31e9c6fb8a70b4d9e25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access all of the internally stored data directly.  <a href="#a82e7bf37171be31e9c6fb8a70b4d9e25">More...</a><br /></td></tr>
<tr class="separator:a82e7bf37171be31e9c6fb8a70b4d9e25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abeca0497f9248784e868f038dd9f4ceb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abeca0497f9248784e868f038dd9f4ceb"></a>
<a class="el" href="classArGPS.html#aac34efdbce1db348fb8a48586e62e2c8">FixType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#abeca0497f9248784e868f038dd9f4ceb">getFixType</a> () const </td></tr>
<tr class="memdesc:abeca0497f9248784e868f038dd9f4ceb"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:abeca0497f9248784e868f038dd9f4ceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d72883bfa14c7a5b7f0cedb6203f951"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d72883bfa14c7a5b7f0cedb6203f951"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a6d72883bfa14c7a5b7f0cedb6203f951">getFixTypeName</a> () const </td></tr>
<tr class="memdesc:a6d72883bfa14c7a5b7f0cedb6203f951"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:a6d72883bfa14c7a5b7f0cedb6203f951"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9897226b2e48796de25b114a74b1ecf5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9897226b2e48796de25b114a74b1ecf5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a9897226b2e48796de25b114a74b1ecf5">havePosition</a> () const </td></tr>
<tr class="memdesc:a9897226b2e48796de25b114a74b1ecf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPRMC) <br /></td></tr>
<tr class="separator:a9897226b2e48796de25b114a74b1ecf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed3f5b61e32d7ddc6e71e239ec8ca8f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed3f5b61e32d7ddc6e71e239ec8ca8f6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aed3f5b61e32d7ddc6e71e239ec8ca8f6">haveLatitude</a> () const </td></tr>
<tr class="memdesc:aed3f5b61e32d7ddc6e71e239ec8ca8f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPRMC) <br /></td></tr>
<tr class="separator:aed3f5b61e32d7ddc6e71e239ec8ca8f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7e9023aebdd04835d2390941d10cd4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7e9023aebdd04835d2390941d10cd4f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ae7e9023aebdd04835d2390941d10cd4f">haveLongitude</a> () const </td></tr>
<tr class="memdesc:ae7e9023aebdd04835d2390941d10cd4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPRMC) <br /></td></tr>
<tr class="separator:ae7e9023aebdd04835d2390941d10cd4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a087bc9dd3bd7d234269a0de4b831f5a5"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a087bc9dd3bd7d234269a0de4b831f5a5">getLatitude</a> () const </td></tr>
<tr class="separator:a087bc9dd3bd7d234269a0de4b831f5a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9733a782e5decb7f7726b89584c9f94"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ab9733a782e5decb7f7726b89584c9f94">getLongitude</a> () const </td></tr>
<tr class="separator:ab9733a782e5decb7f7726b89584c9f94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47c64e72b4c6d5c10710f9d1d49dcbf1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArLLACoords.html">ArLLACoords</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a47c64e72b4c6d5c10710f9d1d49dcbf1">getLLA</a> () const </td></tr>
<tr class="separator:a47c64e72b4c6d5c10710f9d1d49dcbf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13ae821b36296ea4efebccc5fdc75933"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a13ae821b36296ea4efebccc5fdc75933">getAsPose</a> () const </td></tr>
<tr class="separator:a13ae821b36296ea4efebccc5fdc75933"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f6f55f2a528e81618cb941457849e44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a0f6f55f2a528e81618cb941457849e44">getTimeReceivedPosition</a> () const </td></tr>
<tr class="separator:a0f6f55f2a528e81618cb941457849e44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d68733e8025cbf7af907bf130a2c1ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d68733e8025cbf7af907bf130a2c1ed"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a0d68733e8025cbf7af907bf130a2c1ed">haveSpeed</a> () const </td></tr>
<tr class="memdesc:a0d68733e8025cbf7af907bf130a2c1ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPRMC) <br /></td></tr>
<tr class="separator:a0d68733e8025cbf7af907bf130a2c1ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03201806c2e61c5e8e0fdf1d2c9309e6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a03201806c2e61c5e8e0fdf1d2c9309e6">getSpeed</a> () const </td></tr>
<tr class="separator:a03201806c2e61c5e8e0fdf1d2c9309e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad33f8559bd069c837cc02a3414f6a1b1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ad33f8559bd069c837cc02a3414f6a1b1">getGPSPositionTimestamp</a> () const </td></tr>
<tr class="memdesc:ad33f8559bd069c837cc02a3414f6a1b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timestamp provided by GPS device along with position.  <a href="#ad33f8559bd069c837cc02a3414f6a1b1">More...</a><br /></td></tr>
<tr class="separator:ad33f8559bd069c837cc02a3414f6a1b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33c1fe382ba80b85d7ba5fdfe04ac809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33c1fe382ba80b85d7ba5fdfe04ac809"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>getNumSatellitesTracked</b> () const </td></tr>
<tr class="separator:a33c1fe382ba80b85d7ba5fdfe04ac809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a407209b2ff4220c23633fd1556b9bdce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a407209b2ff4220c23633fd1556b9bdce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a407209b2ff4220c23633fd1556b9bdce">haveDGPSStation</a> () const </td></tr>
<tr class="memdesc:a407209b2ff4220c23633fd1556b9bdce"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:a407209b2ff4220c23633fd1556b9bdce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55f53667aee0f967c144625e400a32eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55f53667aee0f967c144625e400a32eb"></a>
unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a55f53667aee0f967c144625e400a32eb">getDGPSStationID</a> () const </td></tr>
<tr class="memdesc:a55f53667aee0f967c144625e400a32eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:a55f53667aee0f967c144625e400a32eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c0f1cf598668c670e286e2e09058505"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a5c0f1cf598668c670e286e2e09058505">haveGarminPositionError</a> () const </td></tr>
<tr class="separator:a5c0f1cf598668c670e286e2e09058505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ef2c6a652ce611f70540a0f1183e2f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ef2c6a652ce611f70540a0f1183e2f1"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a3ef2c6a652ce611f70540a0f1183e2f1">getGarminPositionError</a> () const </td></tr>
<tr class="memdesc:a3ef2c6a652ce611f70540a0f1183e2f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">GPS device's error estimation in meters (from a Garmin-specific message PGRME, most GPS receivers will not provide this) <br /></td></tr>
<tr class="separator:a3ef2c6a652ce611f70540a0f1183e2f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af58b71443b74178ba30cd5392e27dc0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#af58b71443b74178ba30cd5392e27dc0e">haveGarminVerticalPositionError</a> () const </td></tr>
<tr class="separator:af58b71443b74178ba30cd5392e27dc0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4506010ffcf62d79e138b78e6f4ebf6a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a4506010ffcf62d79e138b78e6f4ebf6a">getGarminVerticalPositionError</a> () const </td></tr>
<tr class="separator:a4506010ffcf62d79e138b78e6f4ebf6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e98fa2db7aeb5c3b8588aecc1dd7a99"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a0e98fa2db7aeb5c3b8588aecc1dd7a99">haveCompassHeadingMag</a> () const </td></tr>
<tr class="memdesc:a0e98fa2db7aeb5c3b8588aecc1dd7a99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Have a compass heading value relative to magnetic north.  <a href="#a0e98fa2db7aeb5c3b8588aecc1dd7a99">More...</a><br /></td></tr>
<tr class="separator:a0e98fa2db7aeb5c3b8588aecc1dd7a99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce68ed50982038ec20cd6f85e5bb965"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a3ce68ed50982038ec20cd6f85e5bb965">haveCompassHeadingTrue</a> () const </td></tr>
<tr class="memdesc:a3ce68ed50982038ec20cd6f85e5bb965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Have a compass heading value relative to true north (using GPS/compass device's configured declination).  <a href="#a3ce68ed50982038ec20cd6f85e5bb965">More...</a><br /></td></tr>
<tr class="separator:a3ce68ed50982038ec20cd6f85e5bb965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9ca88a70e6f2c5f1eae73a7645af46c"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aa9ca88a70e6f2c5f1eae73a7645af46c">getCompassHeadingMag</a> () const </td></tr>
<tr class="memdesc:aa9ca88a70e6f2c5f1eae73a7645af46c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Heading from magnetic north.  <a href="#aa9ca88a70e6f2c5f1eae73a7645af46c">More...</a><br /></td></tr>
<tr class="separator:aa9ca88a70e6f2c5f1eae73a7645af46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1353b14052843fd520255e531cf14bd1"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a1353b14052843fd520255e531cf14bd1">getCompassHeadingTrue</a> () const </td></tr>
<tr class="memdesc:a1353b14052843fd520255e531cf14bd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Heading from true north.  <a href="#a1353b14052843fd520255e531cf14bd1">More...</a><br /></td></tr>
<tr class="separator:a1353b14052843fd520255e531cf14bd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaded558b32fa77a184447a2fca6aecc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aaded558b32fa77a184447a2fca6aecc3">setCompassHeadingMag</a> (double val)</td></tr>
<tr class="memdesc:aaded558b32fa77a184447a2fca6aecc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manually set compass value.  <a href="#aaded558b32fa77a184447a2fca6aecc3">More...</a><br /></td></tr>
<tr class="separator:aaded558b32fa77a184447a2fca6aecc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3c0274845aff30324bd902502f160b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ab3c0274845aff30324bd902502f160b3">setCompassHeadingTrue</a> (double val)</td></tr>
<tr class="memdesc:ab3c0274845aff30324bd902502f160b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manually set compass value.  <a href="#ab3c0274845aff30324bd902502f160b3">More...</a><br /></td></tr>
<tr class="separator:ab3c0274845aff30324bd902502f160b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace487fd8b428647fb0a6cb1ca2be6688"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ace487fd8b428647fb0a6cb1ca2be6688">setCompassHeadingMagWithLock</a> (double val)</td></tr>
<tr class="memdesc:ace487fd8b428647fb0a6cb1ca2be6688"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manually set compass value.  <a href="#ace487fd8b428647fb0a6cb1ca2be6688">More...</a><br /></td></tr>
<tr class="separator:ace487fd8b428647fb0a6cb1ca2be6688"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab67aaca761e9bc010e7827e8baf03d21"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ab67aaca761e9bc010e7827e8baf03d21">setCompassHeadingTrueWithLock</a> (double val)</td></tr>
<tr class="memdesc:ab67aaca761e9bc010e7827e8baf03d21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manually set compass value.  <a href="#ab67aaca761e9bc010e7827e8baf03d21">More...</a><br /></td></tr>
<tr class="separator:ab67aaca761e9bc010e7827e8baf03d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a651d7f4c6582e2096f7ae2eadb153c01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a651d7f4c6582e2096f7ae2eadb153c01"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a651d7f4c6582e2096f7ae2eadb153c01">haveAltitude</a> () const </td></tr>
<tr class="memdesc:a651d7f4c6582e2096f7ae2eadb153c01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Altitude above sea level calculated from satellite positions (see also haveAltimiter()) (from NMEA GPGGA, if provided) <br /></td></tr>
<tr class="separator:a651d7f4c6582e2096f7ae2eadb153c01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a3bcdde71e5a36b3b4bb71f84e84f86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a3bcdde71e5a36b3b4bb71f84e84f86"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a6a3bcdde71e5a36b3b4bb71f84e84f86">getAltitude</a> () const </td></tr>
<tr class="memdesc:a6a3bcdde71e5a36b3b4bb71f84e84f86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Altitude above sea level (meters), calculated from satellite positions (see also getAltimiter()) (from NMEA GPGGA, if provided) <br /></td></tr>
<tr class="separator:a6a3bcdde71e5a36b3b4bb71f84e84f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef989a28b59adc78103e78017f2ea66a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef989a28b59adc78103e78017f2ea66a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aef989a28b59adc78103e78017f2ea66a">haveAltimeter</a> () const </td></tr>
<tr class="memdesc:aef989a28b59adc78103e78017f2ea66a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some receivers may have an additional altitude from an altimiter (meters above sea level) (from PGRMZ, if receiver provides it) <br /></td></tr>
<tr class="separator:aef989a28b59adc78103e78017f2ea66a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a022c290b492160b4ee36ba61d91b3b3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a022c290b492160b4ee36ba61d91b3b3e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a022c290b492160b4ee36ba61d91b3b3e">getAltimeter</a> () const </td></tr>
<tr class="memdesc:a022c290b492160b4ee36ba61d91b3b3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some receivers may have an additional altitude from an altimiter (meters above sea level) (from PGRMZ, if receiver provides it) <br /></td></tr>
<tr class="separator:a022c290b492160b4ee36ba61d91b3b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01ff58dfbbfb102b58c762ea1ac5a7f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01ff58dfbbfb102b58c762ea1ac5a7f4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a01ff58dfbbfb102b58c762ea1ac5a7f4">haveHDOP</a> () const </td></tr>
<tr class="memdesc:a01ff58dfbbfb102b58c762ea1ac5a7f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:a01ff58dfbbfb102b58c762ea1ac5a7f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a725726751804ff7bb148b9cbd1fe83d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a725726751804ff7bb148b9cbd1fe83d7"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a725726751804ff7bb148b9cbd1fe83d7">getHDOP</a> () const </td></tr>
<tr class="memdesc:a725726751804ff7bb148b9cbd1fe83d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:a725726751804ff7bb148b9cbd1fe83d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa780f2fd24fc5a18ffd1ce7566532c01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa780f2fd24fc5a18ffd1ce7566532c01"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aa780f2fd24fc5a18ffd1ce7566532c01">haveVDOP</a> () const </td></tr>
<tr class="memdesc:aa780f2fd24fc5a18ffd1ce7566532c01"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:aa780f2fd24fc5a18ffd1ce7566532c01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca880c875597c0a534eaf076669ff9f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca880c875597c0a534eaf076669ff9f2"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aca880c875597c0a534eaf076669ff9f2">getVDOP</a> () const </td></tr>
<tr class="memdesc:aca880c875597c0a534eaf076669ff9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:aca880c875597c0a534eaf076669ff9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae509752a10b7b4d7e8aac857328bf568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae509752a10b7b4d7e8aac857328bf568"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ae509752a10b7b4d7e8aac857328bf568">havePDOP</a> () const </td></tr>
<tr class="memdesc:ae509752a10b7b4d7e8aac857328bf568"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:ae509752a10b7b4d7e8aac857328bf568"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac81f33f060cc669bcb671be722082ce9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac81f33f060cc669bcb671be722082ce9"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ac81f33f060cc669bcb671be722082ce9">getPDOP</a> () const </td></tr>
<tr class="memdesc:ac81f33f060cc669bcb671be722082ce9"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGGA) <br /></td></tr>
<tr class="separator:ac81f33f060cc669bcb671be722082ce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af43193ea7813e92b8b5b5e7bca821bc6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af43193ea7813e92b8b5b5e7bca821bc6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#af43193ea7813e92b8b5b5e7bca821bc6">haveSNR</a> () const </td></tr>
<tr class="memdesc:af43193ea7813e92b8b5b5e7bca821bc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGSV) <br /></td></tr>
<tr class="separator:af43193ea7813e92b8b5b5e7bca821bc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc9af9ed6996db619f97c0b1952f8f81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc9af9ed6996db619f97c0b1952f8f81"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#acc9af9ed6996db619f97c0b1952f8f81">getMeanSNR</a> () const </td></tr>
<tr class="memdesc:acc9af9ed6996db619f97c0b1952f8f81"><td class="mdescLeft">&#160;</td><td class="mdescRight">dB (from NMEA GPGSV) <br /></td></tr>
<tr class="separator:acc9af9ed6996db619f97c0b1952f8f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac514e3208fb02024969a619ad25c745"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac514e3208fb02024969a619ad25c745"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aac514e3208fb02024969a619ad25c745">haveBeaconInfo</a> () const </td></tr>
<tr class="memdesc:aac514e3208fb02024969a619ad25c745"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether we have any DGPS stationary beacon info (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:aac514e3208fb02024969a619ad25c745"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadaf60deae80b1d1a3d62fce582c7c6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadaf60deae80b1d1a3d62fce582c7c6a"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aadaf60deae80b1d1a3d62fce582c7c6a">getBeaconSignalStrength</a> () const </td></tr>
<tr class="memdesc:aadaf60deae80b1d1a3d62fce582c7c6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">DGPS stationary beacon signal strength (dB) (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:aadaf60deae80b1d1a3d62fce582c7c6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fc5f466bb37b96e7fa7276e1730af58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fc5f466bb37b96e7fa7276e1730af58"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a2fc5f466bb37b96e7fa7276e1730af58">getBeaconSNR</a> () const </td></tr>
<tr class="memdesc:a2fc5f466bb37b96e7fa7276e1730af58"><td class="mdescLeft">&#160;</td><td class="mdescRight">DGPS stationary beacon signal to noise (dB) (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:a2fc5f466bb37b96e7fa7276e1730af58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5f2ce47fe506b34561c2ab0129d1238"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5f2ce47fe506b34561c2ab0129d1238"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#af5f2ce47fe506b34561c2ab0129d1238">getBeaconFreq</a> () const </td></tr>
<tr class="memdesc:af5f2ce47fe506b34561c2ab0129d1238"><td class="mdescLeft">&#160;</td><td class="mdescRight">DGPS stationary beacon frequency (kHz) (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:af5f2ce47fe506b34561c2ab0129d1238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1b34a14450377aa632b15852db450d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1b34a14450377aa632b15852db450d4"></a>
unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#af1b34a14450377aa632b15852db450d4">getBecaonBPS</a> () const </td></tr>
<tr class="memdesc:af1b34a14450377aa632b15852db450d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">DGPS stationary beacon bitrate (bits per second) (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:af1b34a14450377aa632b15852db450d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab990572bfe2e10d90b778adca00c465"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab990572bfe2e10d90b778adca00c465"></a>
unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aab990572bfe2e10d90b778adca00c465">getBeaconChannel</a> () const </td></tr>
<tr class="memdesc:aab990572bfe2e10d90b778adca00c465"><td class="mdescLeft">&#160;</td><td class="mdescRight">DGPS stationary beacon channel (from NMEA GPMSS) <br /></td></tr>
<tr class="separator:aab990572bfe2e10d90b778adca00c465"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f7068a9d933ac71ca31c6042d9179de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f7068a9d933ac71ca31c6042d9179de"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a1f7068a9d933ac71ca31c6042d9179de">haveErrorEllipse</a> () const </td></tr>
<tr class="memdesc:a1f7068a9d933ac71ca31c6042d9179de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether we have a position error estimate (as standard deviations in latitude and longitude) (from NMEA GPGST) <br /></td></tr>
<tr class="separator:a1f7068a9d933ac71ca31c6042d9179de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a677528630118e47645bf784ed9059e31"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a677528630118e47645bf784ed9059e31">getErrorEllipse</a> () const </td></tr>
<tr class="memdesc:a677528630118e47645bf784ed9059e31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard deviation of position error (latitude and longitude), meters.  <a href="#a677528630118e47645bf784ed9059e31">More...</a><br /></td></tr>
<tr class="separator:a677528630118e47645bf784ed9059e31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ea0bafab73a3401114082baa354597b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ea0bafab73a3401114082baa354597b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a2ea0bafab73a3401114082baa354597b">haveLatLonError</a> () const </td></tr>
<tr class="memdesc:a2ea0bafab73a3401114082baa354597b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether we have latitude or longitude error estimates (from NMEA GPGST) <br /></td></tr>
<tr class="separator:a2ea0bafab73a3401114082baa354597b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee8f433320417788fb68b1dc83decda0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aee8f433320417788fb68b1dc83decda0">getLatLonError</a> () const </td></tr>
<tr class="memdesc:aee8f433320417788fb68b1dc83decda0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard deviation of latitude and longitude error, meters.  <a href="#aee8f433320417788fb68b1dc83decda0">More...</a><br /></td></tr>
<tr class="separator:aee8f433320417788fb68b1dc83decda0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bc201520be6eb611cff0d92362cce3e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a7bc201520be6eb611cff0d92362cce3e">getLatitudeError</a> () const </td></tr>
<tr class="memdesc:a7bc201520be6eb611cff0d92362cce3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard deviation of latitude and longitude error, meters.  <a href="#a7bc201520be6eb611cff0d92362cce3e">More...</a><br /></td></tr>
<tr class="separator:a7bc201520be6eb611cff0d92362cce3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49cf77381df3520bd51255d15ad98b37"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a49cf77381df3520bd51255d15ad98b37">getLongitudeError</a> () const </td></tr>
<tr class="memdesc:a49cf77381df3520bd51255d15ad98b37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard deviation of latitude and longitude error, meters.  <a href="#a49cf77381df3520bd51255d15ad98b37">More...</a><br /></td></tr>
<tr class="separator:a49cf77381df3520bd51255d15ad98b37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad75e4079ba8cdb16b0bc1b3d63121d6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad75e4079ba8cdb16b0bc1b3d63121d6b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>haveAltitudeError</b> () const </td></tr>
<tr class="separator:ad75e4079ba8cdb16b0bc1b3d63121d6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeabd244f1654208d2f0c9422ae9392d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeabd244f1654208d2f0c9422ae9392d"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#aaeabd244f1654208d2f0c9422ae9392d">getAltitudeError</a> () const </td></tr>
<tr class="memdesc:aaeabd244f1654208d2f0c9422ae9392d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard deviation of altitude error, meters. (from NMEA GPGST, if provided) <br /></td></tr>
<tr class="separator:aaeabd244f1654208d2f0c9422ae9392d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae60ecb9ee63b8eba493ba0a017475f79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae60ecb9ee63b8eba493ba0a017475f79"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ae60ecb9ee63b8eba493ba0a017475f79">haveInputsRMS</a> () const </td></tr>
<tr class="memdesc:ae60ecb9ee63b8eba493ba0a017475f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGST) <br /></td></tr>
<tr class="separator:ae60ecb9ee63b8eba493ba0a017475f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a031c02503c794691edcb794a05eb8b40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a031c02503c794691edcb794a05eb8b40"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a031c02503c794691edcb794a05eb8b40">getInputsRMS</a> () const </td></tr>
<tr class="memdesc:a031c02503c794691edcb794a05eb8b40"><td class="mdescLeft">&#160;</td><td class="mdescRight">(from NMEA GPGST) <br /></td></tr>
<tr class="separator:a031c02503c794691edcb794a05eb8b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14126094a6cc018afe0775af33d70ed5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a14126094a6cc018afe0775af33d70ed5">addNMEAHandler</a> (const char *message, <a class="el" href="classArNMEAParser.html#a27614b91ab3c5867ec63aac920085911">ArNMEAParser::Handler</a> *handler)</td></tr>
<tr class="memdesc:a14126094a6cc018afe0775af33d70ed5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a handler for an NMEA message.  <a href="#a14126094a6cc018afe0775af33d70ed5">More...</a><br /></td></tr>
<tr class="separator:a14126094a6cc018afe0775af33d70ed5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefef22768a081982cf00c986b35be60b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefef22768a081982cf00c986b35be60b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>removeNMEAHandler</b> (const char *message)</td></tr>
<tr class="separator:aefef22768a081982cf00c986b35be60b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdcdf720ceeb5eb048600a0a1e91f850"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdcdf720ceeb5eb048600a0a1e91f850"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>replaceNMEAHandler</b> (const char *message, <a class="el" href="classArNMEAParser.html#a27614b91ab3c5867ec63aac920085911">ArNMEAParser::Handler</a> *handler)</td></tr>
<tr class="separator:acdcdf720ceeb5eb048600a0a1e91f850"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd017db96f2b0af30cb66e05d956faab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd017db96f2b0af30cb66e05d956faab"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><b>getFixTypeName</b> (<a class="el" href="classArGPS.html#aac34efdbce1db348fb8a48586e62e2c8">FixType</a> type)</td></tr>
<tr class="separator:afd017db96f2b0af30cb66e05d956faab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39158124d1fada7c61a6a70bd989d39e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a39158124d1fada7c61a6a70bd989d39e">waitForData</a> (unsigned long timeout)</td></tr>
<tr class="memdesc:a39158124d1fada7c61a6a70bd989d39e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block until data is read from GPS.  <a href="#a39158124d1fada7c61a6a70bd989d39e">More...</a><br /></td></tr>
<tr class="separator:a39158124d1fada7c61a6a70bd989d39e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3ce4c0cb96622088d16a18dcf5c7761"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ac3ce4c0cb96622088d16a18dcf5c7761">initDevice</a> ()</td></tr>
<tr class="memdesc:ac3ce4c0cb96622088d16a18dcf5c7761"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subclasses may override to send device initialization/configuration commands and set up device-specific message handlers.  <a href="#ac3ce4c0cb96622088d16a18dcf5c7761">More...</a><br /></td></tr>
<tr class="separator:ac3ce4c0cb96622088d16a18dcf5c7761"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dc9472637921c047a5239fdb72946c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0dc9472637921c047a5239fdb72946c0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readFloatFromString</b> (const std::string &amp;str, double *target, double(*convf)(double)=NULL) const </td></tr>
<tr class="separator:a0dc9472637921c047a5239fdb72946c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7369960dff94032b58f8cd2ceba0e7fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7369960dff94032b58f8cd2ceba0e7fb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readUShortFromString</b> (const std::string &amp;str, unsigned short *target, unsigned short(*convf)(unsigned short)=NULL) const </td></tr>
<tr class="separator:a7369960dff94032b58f8cd2ceba0e7fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cef9799d1f6d741c30cb6d03e599345"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cef9799d1f6d741c30cb6d03e599345"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readFloatFromStringVec</b> (const std::vector&lt; std::string &gt; *vec, size_t i, double *target, double(*convf)(double)=NULL) const </td></tr>
<tr class="separator:a6cef9799d1f6d741c30cb6d03e599345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a652f454312de22a2c63ef28db1225d14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a652f454312de22a2c63ef28db1225d14"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readUShortFromStringVec</b> (const std::vector&lt; std::string &gt; *vec, size_t i, unsigned short *target, unsigned short(*convf)(unsigned short)=NULL) const </td></tr>
<tr class="separator:a652f454312de22a2c63ef28db1225d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b52927d9bd04993f7ba1aac5982f1d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b52927d9bd04993f7ba1aac5982f1d6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPRMC</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:a4b52927d9bd04993f7ba1aac5982f1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf0b535a7040c046aef62706e6e07ac4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf0b535a7040c046aef62706e6e07ac4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPGGA</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:acf0b535a7040c046aef62706e6e07ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290932cf7873860478e2f0da0e80a6b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a290932cf7873860478e2f0da0e80a6b3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handlePGRME</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:a290932cf7873860478e2f0da0e80a6b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6288133993679a795a95f5c933c2d4b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6288133993679a795a95f5c933c2d4b4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handlePGRMZ</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:a6288133993679a795a95f5c933c2d4b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af441163945fd983649443aba092c98c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af441163945fd983649443aba092c98c6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleHCHDx</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:af441163945fd983649443aba092c98c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fdc2eb9680f62383b1cba4019a3f458"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fdc2eb9680f62383b1cba4019a3f458"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPGSA</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:a3fdc2eb9680f62383b1cba4019a3f458"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad592a0c699671f7e6073ac027a74be5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad592a0c699671f7e6073ac027a74be5e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPGSV</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:ad592a0c699671f7e6073ac027a74be5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe13c0f86fa9692d3258182397d4d219"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe13c0f86fa9692d3258182397d4d219"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPMSS</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:afe13c0f86fa9692d3258182397d4d219"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5096ef0426e1b643665d02dde98c5f4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5096ef0426e1b643665d02dde98c5f4d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>handleGPGST</b> (<a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> msg)</td></tr>
<tr class="separator:a5096ef0426e1b643665d02dde98c5f4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af74fd9754ea9ad34eff2335eaba7468b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af74fd9754ea9ad34eff2335eaba7468b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readTimeFromString</b> (const std::string &amp;s, <a class="el" href="classArTime.html">ArTime</a> *time) const </td></tr>
<tr class="separator:af74fd9754ea9ad34eff2335eaba7468b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27c11d289b8c2851cffa72e82b99e549"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#a27c11d289b8c2851cffa72e82b99e549">parseGPRMC</a> (const <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &amp;msg, double &amp;latitudeResult, double &amp;longitudeResult, bool &amp;qualityFlagResult, bool &amp;gotPosition, <a class="el" href="classArTime.html">ArTime</a> &amp;timeGotPositionResult, <a class="el" href="classArTime.html">ArTime</a> &amp;gpsTimestampResult, bool &amp;gotSpeedResult, double &amp;speedResult)</td></tr>
<tr class="memdesc:a27c11d289b8c2851cffa72e82b99e549"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a GPRMC message (in <em>msg</em>) and place results in provided variables.  <a href="#a27c11d289b8c2851cffa72e82b99e549">More...</a><br /></td></tr>
<tr class="separator:a27c11d289b8c2851cffa72e82b99e549"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38803f42e34643327c63e6f8f4068ea6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38803f42e34643327c63e6f8f4068ea6"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><b>gpsDegminToDegrees</b> (double degmin)</td></tr>
<tr class="separator:a38803f42e34643327c63e6f8f4068ea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0bdc4dd8a3117b14a07c23b7f563521"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bdc4dd8a3117b14a07c23b7f563521"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><b>knotsToMPS</b> (double knots)</td></tr>
<tr class="separator:aa0bdc4dd8a3117b14a07c23b7f563521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9362399631ee3bd6ea176a8b4401516"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9362399631ee3bd6ea176a8b4401516"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArGPS.html#ad9362399631ee3bd6ea176a8b4401516">mpsToMph</a> (const double mps)</td></tr>
<tr class="memdesc:ad9362399631ee3bd6ea176a8b4401516"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert meters per second to miles per hour. <br /></td></tr>
<tr class="separator:ad9362399631ee3bd6ea176a8b4401516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4ca3cb92e1e8127a1f8aeadb8e042da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4ca3cb92e1e8127a1f8aeadb8e042da"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><b>metersToFeet</b> (double m)</td></tr>
<tr class="separator:ac4ca3cb92e1e8127a1f8aeadb8e042da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dd5129447f5e424e6ddbf25de37cab4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dd5129447f5e424e6ddbf25de37cab4"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><b>feetToMeters</b> (double f)</td></tr>
<tr class="separator:a9dd5129447f5e424e6ddbf25de37cab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>GPS Device Interface. </p>
<p>Connects to GPS device over a serial port or other device connection and reads data. Supports GPS devices sending standard NMEA format data (specifically the GPRMC, GPGGA, GPGSA, GPGRME, and optionally GPGSV, PGRMZ, PGRME, HCHDG/T/M and GPHDG/T/M messages). If your GPS device supports several data formats or modes, select NMEA output in its configuration.</p>
<p>The preferred method of creating and setting up a new <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> object is to use <a class="el" href="classArGPSConnector.html" title="Factory for creating GPS interface object (for any kind of GPS supported by ARIA) based on robot para...">ArGPSConnector</a>, which creates an instance of <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> or a subclass, and creates and opens its device connection, based on command-line parameters. (To manually create an <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> object, create an <a class="el" href="classArDeviceConnection.html" title="Base class for device connections. ">ArDeviceConnection</a> instance and call <a class="el" href="classArGPS.html#a61bdacae0f1a76978f2972055fca02c9" title="Set device connection to use. ">setDeviceConnection()</a>, then open that device connection and call <a class="el" href="classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e" title="Check that the device connection (e.g. ">connect()</a>.</p>
<p>For either method, to get new data from the GPS, must call <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> or <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a> periodically, ideally at a rate equal to or faster than your GPS sends data (usually one second). You can do this from a Sensor Intetrpretation Task in <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a>, or a seperate thread. If you are calling <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> from a loop in a new thread,</p>
<p>Here is an example of calling <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a> from a sensor interpretation task. The integer argument given to the functor constructor is a milisecond timeout that is passed to <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a> and prevents it from blocking too long if it doesn't read any data. It is important to do this in a robot task, or the robot task cycle will be blocked and cause problems. </p><div class="fragment"><div class="line"><a class="code" href="classArRetFunctor1C.html">ArRetFunctor1C&lt;ArGPS, int, unsigned int&gt;</a> gpsReadFunc(myGPS, &amp;<a class="code" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e">ArGPS::readWithLock</a>, 10);</div><div class="line">myRobot-&gt;addSensorInterpretationTask(<span class="stringliteral">&quot;GPS read&quot;</span>, 100, &amp;gpsReadFunc);</div></div><!-- fragment --><p>If you use your own loop or thread, then it ought to include a call to <a class="el" href="group__easy.html#ga4dfb878a3f9123b8dd96ae05b2fd94cb" title="Sleep for the given number of milliseconds. ">ArUtil::sleep()</a> for at least several hundred miliseconds to avoid starving other threads, since <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> will return immediately if there is no data to read rather than blocking.</p>
<p>For each piece of data provided by this class, there is a flag indicating whether it was received from the GPS and set. Not all GPS models return all kinds of information, or it may be disabled in some way in a GPS's internal configuration, or the GPS may not yet have started sending the data (e.g. still acquiring satellites). Also, not all data will be received by one call to <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a>, and especially immediately after connecting and starting to read data, it may take a few seconds for data to be obtained. Furthermore, it may take some time for the GPS to calculate data with full accuracy.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="gpsExample_8cpp-example.html">gpsExample.cpp</a> </dd>
<dd>
<a class="el" href="gpsRobotTaskExample_8cpp-example.html">gpsRobotTaskExample.cpp</a></dd></dl>
<p>This class is not inherently thread safe. Stored data is updated by <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a>, so if accessing from multiple threads, call <a class="el" href="classArGPS.html#aaa9e1a5e2a9016b7c0ff1435b11ee7e3" title="Locks a mutex object contained by this class. ">lock()</a> before calling any data accessor methods (methods starting with "get"), or <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a>, and call <a class="el" href="classArGPS.html#ac72416e9644f85190ab246fba82a7de5" title="Unlocks a mutex object contained by this class. ">unlock()</a> when done. You can also call <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a> to do a locked read in one function call.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> only provides access to the data reported by a GPS. The position reported by a GPS is in degrees on the surface of the earth (WGS84 datum), not in the cartesian coordinate system used by the robot odometry or <a class="el" href="classArMap.html" title="A map of a two-dimensional space the robot can navigate within, and which can be updated via the Aria...">ArMap</a>. You can use the subclasses of <a class="el" href="classAr3DPoint.html" title="Base class for points in 3 dimensional cartesian space. ">Ar3DPoint</a> (<a class="el" href="classArLLACoords.html" title="Latitude, Longitude and Altitude Coordinates. ">ArLLACoords</a>, etc) to convert between different geographical coordinate systems, which may help you match GPS coordinates to the robot pose coordinate system.</dd>
<dd>
Generally one device per connection is assumed. If multiple devices are chained, all sending messages on one connection, messages from different devices are not distinguished. This is OK if the devices send different types of messages. (However a particular message handler function in a subclass of <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> could check the message prefix. No message handlers in <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> or subclasses provided in ARIA do this however.)</dd></dl>
<dl class="section see"><dt>See also</dt><dd>ArGPSMapCoords </dd>
<dd>
<a class="el" href="classArGPSCoordConverter.html" title="Contains conversion of latitude and longitude to flat map coordinates in one object with one convert(...">ArGPSCoordConverter</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gpsExample_8cpp-example.html#_a17">gpsExample.cpp</a>, and <a class="el" href="gpsRobotTaskExample_8cpp-example.html#_a1">gpsRobotTaskExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="a61a3e3855fdddd17b792d4c2a66fcad8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flags to indicates what the <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> method did. </p>
<p>i.e. If nothing was done, then the result will be 0. To check a <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> return result <em>result</em> to see if data was updated, use (result &amp; ReadUpdated). To check if there was an error, use (result &amp; ReadError).</p>
<p>These happen to match the flags in <a class="el" href="classArNMEAParser.html" title="NMEA Parser. ">ArNMEAParser</a>. </p>

</div>
</div>
<a class="anchor" id="aac34efdbce1db348fb8a48586e62e2c8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classArGPS.html#aac34efdbce1db348fb8a48586e62e2c8">ArGPS::FixType</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Data accessors. </p>
<p>Access the last received data from the GPS </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a14126094a6cc018afe0775af33d70ed5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::addNMEAHandler </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArNMEAParser.html#a27614b91ab3c5867ec63aac920085911">ArNMEAParser::Handler</a> *&#160;</td>
          <td class="paramname"><em>handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set a handler for an NMEA message. </p>
<p>Mostly for internal use or to be used by related classes, but you could use for ususual or custom messages emitted by a device that you wish to be handled outside of the <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> class. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">message</td><td>Message identifier, without the prefix (i.e. without the "GP" prefix, or other prefix.) </td></tr>
    <tr><td class="paramname">handhler</td><td>Handler function to parse and handle the message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArNMEAParser.html#aca42b6a20a0a386a43ec5bb134db1378" title="Set a handler for an NMEA message. ">ArNMEAParser::addHandler</a> </dd>
<dd>
<a class="el" href="classArNMEAParser.html#a27614b91ab3c5867ec63aac920085911" title="NMEA message handler type. ">ArNMEAParser::Handler</a> </dd>
<dd>
<a class="el" href="classArNMEAParser.html" title="NMEA Parser. ">ArNMEAParser</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a1e42274140dda87104aee8198ba26932"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::blockingConnect </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>connectTimeout</em> = <code>20000</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Same as <a class="el" href="classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e" title="Check that the device connection (e.g. ">connect()</a>. </p>
<p>See <a class="el" href="classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e" title="Check that the device connection (e.g. ">connect()</a>. </p>

</div>
</div>
<a class="anchor" id="a5edda03cc9e4c8db380e18f8d5465b7e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::connect </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>connectTimeout</em> = <code>20000</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check that the device connection (e.g. </p>
<p>serial port) is open, and that data is being received from GPS.</p>
<p>Subclasses may override this method so that device-specific initialization commands may be sent.</p>
<dl class="section return"><dt>Returns</dt><dd>false if there is no device connection or the device connection is not open, or if there is an error sending device initialization commands, or if no data is received after calling <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> every 100 ms for <em>connectTimeout</em> ms. Otherwise, return true.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArGPS.html#a1e42274140dda87104aee8198ba26932" title="Same as connect(). ">blockingConnect()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gpsExample_8cpp-example.html#a19">gpsExample.cpp</a>, and <a class="el" href="gpsRobotTaskExample_8cpp-example.html#a27">gpsRobotTaskExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a13ae821b36296ea4efebccc5fdc75933"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArPose.html">ArPose</a> ArGPS::getAsPose </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>latitude and longitude in an <a class="el" href="classArPose.html" title="Represents an x, y position with an orientation. ">ArPose</a> object. Theta will be 0. </dd></dl>

</div>
</div>
<a class="anchor" id="aa9ca88a70e6f2c5f1eae73a7645af46c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getCompassHeadingMag </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Heading from magnetic north. </p>
<dl class="section note"><dt>Note</dt><dd>The GPS or compass device must be configured to send HCHDM messages to receive compass data. Only some GPS receivers support this. </dd></dl>

</div>
</div>
<a class="anchor" id="a1353b14052843fd520255e531cf14bd1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getCompassHeadingTrue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Heading from true north. </p>
<dl class="section note"><dt>Note</dt><dd>The GPS or compass device must be configured to send HCHDT messages to receive compass data. Only some GPS receivers support this. </dd></dl>

</div>
</div>
<a class="anchor" id="a82e7bf37171be31e9c6fb8a70b4d9e25"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const ArGPS::Data&amp; ArGPS::getCurrentDataRef </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Access all of the internally stored data directly. </p>
<dl class="section see"><dt>See also</dt><dd>ArGPS::Data </dd></dl>

</div>
</div>
<a class="anchor" id="a677528630118e47645bf784ed9059e31"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArPose.html">ArPose</a> ArGPS::getErrorEllipse </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Standard deviation of position error (latitude and longitude), meters. </p>
<p>Theta in <a class="el" href="classArPose.html" title="Represents an x, y position with an orientation. ">ArPose</a> is orientation of ellipse from true north, Y is the length of the major axis on that orientation, X the minor. (from NMEA GPGST) </p><dl class="section note"><dt>Note</dt><dd>Values may be inf or NaN (if GPS supplies "Inf" or "NAN") </dd></dl>

</div>
</div>
<a class="anchor" id="a4506010ffcf62d79e138b78e6f4ebf6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getGarminVerticalPositionError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>An altitude error estimation (from a Garmin-specific message PGRME, most GPS receivers will not provide this) </dd></dl>

</div>
</div>
<a class="anchor" id="ad33f8559bd069c837cc02a3414f6a1b1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArTime.html">ArTime</a> ArGPS::getGPSPositionTimestamp </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Timestamp provided by GPS device along with position. </p>
<p>(from NMEA GPRMC) </p>

</div>
</div>
<a class="anchor" id="a087bc9dd3bd7d234269a0de4b831f5a5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getLatitude </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>latitude in decimal degrees. (from NMEA GPRMC) </dd></dl>

</div>
</div>
<a class="anchor" id="a7bc201520be6eb611cff0d92362cce3e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getLatitudeError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Standard deviation of latitude and longitude error, meters. </p>
<p>Theta value in <a class="el" href="classArPose.html" title="Represents an x, y position with an orientation. ">ArPose</a> is unused. </p><dl class="section note"><dt>Note</dt><dd>May only be provided by GPS in certain fix modes (e.g. Trimble AgGPS provides it in Omnistar and RTK modes, but not in GPS or DGPS modes). </dd>
<dd>
Values may be inf or NaN (if GPS supplies "Inf" or "NAN") (from NMEA GPGST) </dd></dl>

</div>
</div>
<a class="anchor" id="aee8f433320417788fb68b1dc83decda0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArPose.html">ArPose</a> ArGPS::getLatLonError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Standard deviation of latitude and longitude error, meters. </p>
<p>Theta value in <a class="el" href="classArPose.html" title="Represents an x, y position with an orientation. ">ArPose</a> is unused. </p><dl class="section note"><dt>Note</dt><dd>May only be provided by GPS in certain fix modes (e.g. Trimble AgGPS provides it in Omnistar and RTK modes, but not in GPS or DGPS modes). </dd>
<dd>
Values may be inf or NaN (if GPS supplies "Inf" or "NAN") (from NMEA GPGST) </dd></dl>

</div>
</div>
<a class="anchor" id="a47c64e72b4c6d5c10710f9d1d49dcbf1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArLLACoords.html">ArLLACoords</a> ArGPS::getLLA </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>latitude, longitude and altitude </dd></dl>

</div>
</div>
<a class="anchor" id="ab9733a782e5decb7f7726b89584c9f94"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getLongitude </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>longitude in decimal degrees. (from NMEA GPRMC) </dd></dl>

</div>
</div>
<a class="anchor" id="a49cf77381df3520bd51255d15ad98b37"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getLongitudeError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Standard deviation of latitude and longitude error, meters. </p>
<p>Theta value in <a class="el" href="classArPose.html" title="Represents an x, y position with an orientation. ">ArPose</a> is unused. </p><dl class="section note"><dt>Note</dt><dd>May only be provided by GPS in certain fix modes (e.g. Trimble AgGPS provides it in Omnistar and RTK modes, but not in GPS or DGPS modes). </dd>
<dd>
Values may be inf or NaN (if GPS supplies "Inf" or "NAN") (from NMEA GPGST) </dd></dl>

</div>
</div>
<a class="anchor" id="a03201806c2e61c5e8e0fdf1d2c9309e6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArGPS::getSpeed </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>GPS' measured speed converted to meters per second, if provided (from NMEA GPRMC, if provided) </dd></dl>

</div>
</div>
<a class="anchor" id="a0f6f55f2a528e81618cb941457849e44"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArTime.html">ArTime</a> ArGPS::getTimeReceivedPosition </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>copy of an <a class="el" href="classArTime.html" title="A class for time readings and measuring durations. ">ArTime</a> object set to the time that <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> read and received latitude and longitude data from the GPS. </dd></dl>

</div>
</div>
<a class="anchor" id="a0e98fa2db7aeb5c3b8588aecc1dd7a99"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::haveCompassHeadingMag </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Have a compass heading value relative to magnetic north. </p>
<dl class="section note"><dt>Note</dt><dd>The GPS or compass device must be configured to send HCHDM messages to receive compass data. Only some GPS receivers support this. </dd></dl>

</div>
</div>
<a class="anchor" id="a3ce68ed50982038ec20cd6f85e5bb965"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::haveCompassHeadingTrue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Have a compass heading value relative to true north (using GPS/compass device's configured declination). </p>
<dl class="section note"><dt>Note</dt><dd>The GPS or compass device must be configured to send HCHDT messages to receive compass data. Only some GPS receivers support this. </dd></dl>

</div>
</div>
<a class="anchor" id="a5c0f1cf598668c670e286e2e09058505"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::haveGarminPositionError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether GPS provided a distance error estimation (from a Garmin-specific message PGRME, most GPS receivers will not provide this) </dd></dl>

</div>
</div>
<a class="anchor" id="af58b71443b74178ba30cd5392e27dc0e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::haveGarminVerticalPositionError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether GPS provided an altitude error estimation (from a Garmin-specific message PGRME, most GPS receivers will not provide this) </dd></dl>

</div>
</div>
<a class="anchor" id="ac3ce4c0cb96622088d16a18dcf5c7761"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArGPS::initDevice </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Subclasses may override to send device initialization/configuration commands and set up device-specific message handlers. </p>
<p>(Default behavior is to do nothing and return true.) </p>

</div>
</div>
<a class="anchor" id="aaa9e1a5e2a9016b7c0ff1435b11ee7e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::lock </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Locks a mutex object contained by this class. </p>
<p>No other method (except <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a>) in <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> locks or unlocks this mutex, it is provided for you to use when accessing <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> from multiple threads. </p>

</div>
</div>
<a class="anchor" id="afb09fb019a2bf2047de993b78b9b12d2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::logData </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Log last received data using <a class="el" href="classArLog.html" title="Logging utility class. ">ArLog</a>. </p>

</div>
</div>
<a class="anchor" id="a27c11d289b8c2851cffa72e82b99e549"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::parseGPRMC </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structArNMEAParser_1_1Message.html">ArNMEAParser::Message</a> &amp;&#160;</td>
          <td class="paramname"><em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>latitudeResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>longitudeResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>qualityFlagResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>gotPosition</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArTime.html">ArTime</a> &amp;&#160;</td>
          <td class="paramname"><em>timeGotPositionResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArTime.html">ArTime</a> &amp;&#160;</td>
          <td class="paramname"><em>gpsTimestampResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>gotSpeedResult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>speedResult</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Parse a GPRMC message (in <em>msg</em>) and place results in provided variables. </p>
<p>(Can be used by subclasses to store results of GPRMC differently than normal.) </p><dl class="section since"><dt>Since</dt><dd><a class="el" href="classAria.html" title="Contains global initialization, deinitialization and other global functions. ">Aria</a> 2.7.2 </dd></dl>

</div>
</div>
<a class="anchor" id="abb87bcbe1297e2890a2eb51e999424f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::printData </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>labels</em> = <code>true</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Print basic navigation data on one line to standard output, with no newline at end. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gpsExample_8cpp-example.html#a26">gpsExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ad503a2238efd4e8b447472ceacff6fe4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ArGPS::read </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>maxTime</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read some data from the device connection, and update stored data as complete messages are received. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">maxTime</td><td>If nonzero, return when this time limit is reached, even if there is still data available to read. If zero, then don't return until all available data has been exhausted or an error occurs. Be careful setting this parameter to 0: <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> could block for an arbitrary amount of time, even forever if for some reason data is recieved from the device faster than <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> can read and parse it. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A mask of ReadFlags codes, combined with bitwise or (|), or 0 if no attempt to read from the device occured (for example because the <em>maxTime</em> timeout was reached before the first attempt to read occured). The flags will include ReadError if there was as error reading from the device connection, ReadData if some data was read, ReadUpdated if data was read and a full message was successfully read and stored data was updated in <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a>, ReadFinished if all available data was read. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gpsExample_8cpp-example.html#a24">gpsExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a8cb49994335166fa3d3fd750bf5a054e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ArGPS::readWithLock </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>maxTime</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Calls <a class="el" href="classArGPS.html#aaa9e1a5e2a9016b7c0ff1435b11ee7e3" title="Locks a mutex object contained by this class. ">lock()</a>, calls read(maxTime), then calls <a class="el" href="classArGPS.html#ac72416e9644f85190ab246fba82a7de5" title="Unlocks a mutex object contained by this class. ">unlock()</a>. </p>
<p>Note, this could end up keeping <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> locked until <em>maxTime</em> is reached, or for any amount of time if <em>maxTime</em> is 0, so watch out for that. </p>

</div>
</div>
<a class="anchor" id="aaded558b32fa77a184447a2fca6aecc3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::setCompassHeadingMag </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Manually set compass value. </p>

</div>
</div>
<a class="anchor" id="ace487fd8b428647fb0a6cb1ca2be6688"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::setCompassHeadingMagWithLock </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Manually set compass value. </p>

</div>
</div>
<a class="anchor" id="ab3c0274845aff30324bd902502f160b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::setCompassHeadingTrue </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Manually set compass value. </p>

</div>
</div>
<a class="anchor" id="ab67aaca761e9bc010e7827e8baf03d21"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::setCompassHeadingTrueWithLock </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Manually set compass value. </p>

</div>
</div>
<a class="anchor" id="ac72416e9644f85190ab246fba82a7de5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArGPS::unlock </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Unlocks a mutex object contained by this class. </p>
<p>No other method (except <a class="el" href="classArGPS.html#a8cb49994335166fa3d3fd750bf5a054e" title="Calls lock(), calls read(maxTime), then calls unlock(). ">readWithLock()</a>) in <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> locks or unlocks this mutex, it is provided for you to use when accessing <a class="el" href="classArGPS.html" title="GPS Device Interface. ">ArGPS</a> from multiple threads. </p>

</div>
</div>
<a class="anchor" id="a39158124d1fada7c61a6a70bd989d39e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArGPS::waitForData </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>timeout</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Block until data is read from GPS. </p>
<p>Waits by calling <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> every 100 ms for <em>timeout</em> ms. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a1a7ef7ff521170df45458fc1f3b223a0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum { ... }   ArGPS::ReadFlags</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flags to indicates what the <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> method did. </p>
<p>i.e. If nothing was done, then the result will be 0. To check a <a class="el" href="classArGPS.html#ad503a2238efd4e8b447472ceacff6fe4" title="Read some data from the device connection, and update stored data as complete messages are received...">read()</a> return result <em>result</em> to see if data was updated, use (result &amp; ReadUpdated). To check if there was an error, use (result &amp; ReadError).</p>
<p>These happen to match the flags in <a class="el" href="classArNMEAParser.html" title="NMEA Parser. ">ArNMEAParser</a>. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArGPS.h</li>
<li>ArGPS.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArGPS.html">ArGPS</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
